import type { CategoryList } from "./categoryModel";
import type { UploadUserFile } from "element-plus";

export interface SpuParams {
  page: number;
  limit: number;
  category3Id: number;
}

// {
//   "current": 0,
//   "pages": 0,
//   "records": [
//     {
//       "category3Id": 0,
//       "description": "string",
//       "id": 0,
//       "spuImageList": [
//         {
//           "id": 0,
//           "imgName": "string",
//           "imgUrl": "string",
//           "spuId": 0
//         }
//       ],
//       "spuName": "string",
//       "spuSaleAttrList": [
//         {
//           "baseSaleAttrId": 0,
//           "id": 0,
//           "saleAttrName": "string",
//           "spuId": 0,
//           "spuSaleAttrValueList": [
//             {
//               "baseSaleAttrId": 0,
//               "id": 0,
//               "isChecked": "string",
//               "saleAttrName": "string",
//               "saleAttrValueName": "string",
//               "spuId": 0
//             }
//           ]
//         }
//       ],
//       "tmId": 0
//     }
//   ],
//   "searchCount": true,
//   "size": 0,
//   "total": 0
// }

export interface SpuListResponse {
  records: SpuList;
  total: number;
}

export interface SpuItem {
  category3Id?: number;
  description: string;
  id?: number;
  // spuImageList;
  spuName: string;
  // spuSaleAttrList;
  tmId?: number;
}
export type SpuList = SpuItem[];

// {
//   "id": 1,
//   "name": "颜色"
// },

// 销售属性列表接口
export type BaseSaleAttrList = CategoryList;

export interface SpuSaleAttrValueItem {
  baseSaleAttrId: number;
  saleAttrValueName: string;
  id?: number;
  isChecked?: string;
  saleAttrName?: string;
  spuId?: number;
}

export type SpuSaleAttrValueList = SpuSaleAttrValueItem[];

export interface SpuSaleAttrItem {
  baseSaleAttrId: number;
  saleAttrName: string;
  isShowEdit?: boolean;
  id?: number;
  spuId?: number;
  spuSaleAttrValueList: SpuSaleAttrValueList;
}

export type SpuSaleAttrList = SpuSaleAttrItem[];

export interface SpuFormData extends SpuItem {
  spuImageList: UploadUserFile[];
  spuSaleAttrList: SpuSaleAttrList;
}

export interface SpuImageItem {
  id?: number;
  imgName: string;
  imgUrl: string;
  spuId?: number;
  isDefault?: "0" | "1";
}

export type SpuImageList = SpuImageItem[];

export interface AddOrUpdateSpuParams extends SpuItem {
  spuImageList: SpuImageList;
  spuSaleAttrList: SpuSaleAttrList;
}
